package com.ruoyi.tuanzhang.domain.vo;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 达人直播、视频、图文、橱窗概况数据 /square_pc_api/homePage/overview/core
 */
@NoArgsConstructor
@Data
public class DarenHomeVideoDataDto {

    @JsonProperty("code")
    private Integer code;
    @JsonProperty("data")
    private DataDTO data;
    @JsonProperty("log_id")
    private String logId;
    @JsonProperty("msg")
    private String msg;
    @JsonProperty("st")
    private Integer st;

    @NoArgsConstructor
    @Data
    public static class DataDTO {
        // 评分
        @JsonProperty("scores")
        private ScoresDTO scores;
        // 内容占比
        @JsonProperty("content_data")
        private ContentDataDTO contentData;
        // 直播、视频、图文、橱窗 销售状况
        @JsonProperty("sell_data")
        private SellDataDTO sellData;

        @NoArgsConstructor
        @Data
        public static class ScoresDTO {
            @JsonProperty("matching_score")
            private MatchingScoreDTO matchingScore;
            @JsonProperty("fans_score")
            private FansScoreDTO fansScore;
            @JsonProperty("product_score")
            private ProductScoreDTO productScore;
            @JsonProperty("history_cooperation_score")
            private HistoryCooperationScoreDTO historyCooperationScore;

            @NoArgsConstructor
            @Data
            public static class MatchingScoreDTO {
                @JsonProperty("score")
                private Double score;
            }

            @NoArgsConstructor
            @Data
            public static class FansScoreDTO {
                @JsonProperty("score")
                private Double score;
            }

            @NoArgsConstructor
            @Data
            public static class ProductScoreDTO {
                @JsonProperty("score")
                private Double score;
            }

            @NoArgsConstructor
            @Data
            public static class HistoryCooperationScoreDTO {
                @JsonProperty("score")
                private Double score;
            }
        }

        @NoArgsConstructor
        @Data
        public static class ContentDataDTO {
            @JsonProperty("content_total_count")
            private Integer contentTotalCount;
            @JsonProperty("watching_total_times")
            private Integer watchingTotalTimes;
            @JsonProperty("details")
            private List<DetailsDTO> details;

            @NoArgsConstructor
            @Data
            public static class DetailsDTO {
                @JsonProperty("name")
                private String name;
                @JsonProperty("count")
                private Integer count;
                @JsonProperty("watching_times")
                private Integer watchingTimes;
                @JsonProperty("tag")
                private String tag;
            }
        }

        @NoArgsConstructor
        @Data
        public static class SellDataDTO {
            @JsonProperty("promotion_total_count")
            private Integer promotionTotalCount;
            @JsonProperty("total_sales_low")
            private Integer totalSalesLow;
            @JsonProperty("details")
            private List<DetailsDTO> details;
            @JsonProperty("sale_status")
            private Integer saleStatus;
            @JsonProperty("total_sales_high")
            private Integer totalSalesHigh;

            @NoArgsConstructor
            @Data
            public static class DetailsDTO {
                @JsonProperty("name")
                private String name;
                @JsonProperty("promotion_count")
                private Integer promotionCount;
                @JsonProperty("sales_low")
                private Integer salesLow;
                @JsonProperty("sales_high")
                private Integer salesHigh;
                @JsonProperty("sale_status")
                private Integer saleStatus;
                @JsonProperty("tag")
                private String tag;
            }
        }
    }
}
